package com.delivery.www.dao.DaoImpl;

import com.delivery.www.dao.BaseDao;
import com.delivery.www.dao.HaveCouponDao;
import com.delivery.www.po.HaveCoupon;
import com.delivery.www.util.JdbcUtils;

import java.sql.Connection;
import java.util.List;

/**
 * @author 12970
 */
public class HaveCouponDaoImpl implements HaveCouponDao {
    @Override
    public HaveCoupon ifExist(int couponId, int userId) {
        Connection connection = JdbcUtils.getConnection();
        String sql = "select have_coupon_id,coupon_id,time,user_id,store_id,status from have_coupon where coupon_id = ? and user_id = ?";
        Object[] params = {couponId, userId};
        HaveCoupon haveCoupon = null;
        if (connection != null) {
            haveCoupon = BaseDao.getForOne(connection, HaveCoupon.class, sql, params);
            JdbcUtils.closeResource(connection, null, null);
        }
        return haveCoupon;
    }

    @Override
    public int add(int couponId, String time, int userId, int storeId, int status) {
        Connection connection = JdbcUtils.getConnection();
        Object[] params = {couponId, time, userId, storeId, status};
        String sql = "insert into have_coupon(coupon_id,time,user_id,store_id,status) values(?,?,?,?,?)";
        int i = 0;
        if (connection != null) {
            i = BaseDao.executeUpdate(connection, sql, params);
            JdbcUtils.closeResource(connection, null, null);
        }
        return i;
    }

    @Override
    public List<HaveCoupon> getUserCoupon(int userId, int storeId, int status) {
        Connection connection = JdbcUtils.getConnection();
        Object[] params = {userId, storeId, status};
        String sql = "select have_coupon_id,coupon_id,time,user_id,store_id,status from have_coupon where user_id=? and store_id=? and status = ?";
        List<HaveCoupon> haveCoupons = null;
        if (connection != null) {
            haveCoupons = BaseDao.getList(connection, HaveCoupon.class, sql, params);
            JdbcUtils.closeResource(connection, null, null);
        }
        return haveCoupons;
    }

    @Override
    public List<HaveCoupon> getCoupon(int userId) {
        Connection connection = JdbcUtils.getConnection();
        Object[] params = {userId};
        String sql = "select have_coupon_id,coupon_id,time,user_id,store_id,status from have_coupon where user_id = ?";
        List<HaveCoupon> haveCoupons = null;
        if (connection != null) {
            haveCoupons = BaseDao.getList(connection, HaveCoupon.class, sql, params);
            JdbcUtils.closeResource(connection, null, null);
        }
        return haveCoupons;
    }

    @Override
    public List<HaveCoupon> modifyStatusOver(List<HaveCoupon> haveCoupons) {
        Connection connection = JdbcUtils.getConnection();
        List<HaveCoupon> haveCouponList = null;
        if (connection != null) {
            for (HaveCoupon haveCoupon : haveCoupons) {
                Integer haveCouponId = haveCoupon.getHaveCouponId();
                String sql = "update have_coupon set status = 1 where have_coupon_id = ?";
                BaseDao.executeUpdate(connection, sql, haveCouponId);
            }
            for (HaveCoupon haveCoupon : haveCoupons) {
                Integer haveCouponId = haveCoupon.getUserId();
                String sql = "select have_coupon_id,coupon_id,time,user_id,store_id,status from have_coupon where have_coupon_id = ?";
                haveCouponList = BaseDao.getList(connection, HaveCoupon.class, sql, haveCouponId);
                break;
            }
            JdbcUtils.closeResource(connection, null, null);
        }
        return haveCouponList;
    }

}
